/*
题目：N叉树的层序遍历
给定一个 N 叉树，返回其节点值的层序遍历。（即从左到右，逐层遍历）。

树的序列化输入是用层序遍历，每组子节点都由 null 值分隔（参见示例）。
https://leetcode.cn/problems/n-ary-tree-level-order-traversal/
 */
public class KLevelOrder {
    public List<List<Integer>> levelOrder(Node root) {
        List<List<Integer>> list = new ArrayList<>();
        if (root == null)   return list;
        Queue<Node> queue = new LinkedList<>();
        queue.offer(root);

        while (!queue.isEmpty()) {
            List<Integer> newLine = new ArrayList<> ();
            int curSize = queue.size();

            while (curSize > 0) {
                Node cur = queue.poll();
                newLine.add(cur.val);
                for (Node x : cur.children) {
                    queue.offer(x);
                }
                curSize--;
            }

            list.add(newLine);
        }
        return list;
    }
}
